package DoublePointer;

import java.util.Arrays;
import java.util.HashSet;

/**
 * 3. 反转字符串中的元音字符
 * 使用双指针进行快速遍历数组，一个指针从头开始遍历，一个指针从尾部开始遍历
 * 使用hashset 将元音字母保存在集合中，实现快速比对
 */
public class DoublePointer3_reverseVowels {

    public static void main(String[] args) {
        // hashset 元音字母集合
        HashSet vowels = new HashSet(Arrays.asList('a','o','e','i','u','A','O','E','I','U'));

        String str = "leetcode";
        if (str == null) return;

        int i =0, j = str.length()-1;
        //新集合，将调换后的str字符串存储在新的字符串中，
        // 也可以进行临时参数调换，则不需要建立新字符串数组
        char[] result = new char[str.length()];
        while (i<=j){
            char  ci = str.charAt(i);
            char  cj = str.charAt(j);
            //i++,先执行操作，在执行i=i+1，
            if (!vowels.contains(ci)){
                result[i++] = ci;
            } else if(!vowels.contains(cj)){
                result[j--] = cj;
            } else {
                result[i++] = cj;
                result[j--] = ci;
            }
        }
        System.out.println(result);
    }
}
